

const {createElement} = require('../Core/vDOM') // 解决babel-preset打包出现的具名问题

/**
 * 公共部分：
 *  1.数据定义
 *  2.事件处理
 *  3.渲染时机
 * 
 * 其余交给子类自行开发
 */
class Base extends HTMLElement{
    [render: string]: any // 不报错
    state:object = {}
    createElement: object = createElement // 为了实现JSX语法，全局挂载一个必要的组件
    root: HTMLElement = document.createElement('p')  // 必定会产生一个标签
    

    constructor() {
        super()
        setTimeout(() => {
            console.time('1')
            this.root.innerHTML = this.render?.()
            // console.log(this.render?.());
            
            this.append(this.root)
            console.timeEnd('1')
        })
    }    
}

export {Base}